home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / mmc / host.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  3KB  |  109 lines

  1. /*
  2.  *  linux/include/linux/mmc/host.h
  3.  *
  4.  * This program is free software; you can redistribute it and/or modify
  5.  * it under the terms of the GNU General Public License version 2 as
  6.  * published by the Free Software Foundation.
  7.  *
  8.  *  Host driver specific definitions.
  9.  */
  10. #ifndef LINUX_MMC_HOST_H
  11. #define LINUX_MMC_HOST_H
  12.  
  13. #include <linux/mmc/mmc.h>
  14.  
  15. struct mmc_ios {
  16.     unsigned int    clock;            /* clock rate */
  17.     unsigned short    vdd;
  18.  
  19. #define    MMC_VDD_150    0
  20. #define    MMC_VDD_155    1
  21. #define    MMC_VDD_160    2
  22. #define    MMC_VDD_165    3
  23. #define    MMC_VDD_170    4
  24. #define    MMC_VDD_180    5
  25. #define    MMC_VDD_190    6
  26. #define    MMC_VDD_200    7
  27. #define    MMC_VDD_210    8
  28. #define    MMC_VDD_220    9
  29. #define    MMC_VDD_230    10
  30. #define    MMC_VDD_240    11
  31. #define    MMC_VDD_250    12
  32. #define    MMC_VDD_260    13
  33. #define    MMC_VDD_270    14
  34. #define    MMC_VDD_280    15
  35. #define    MMC_VDD_290    16
  36. #define    MMC_VDD_300    17
  37. #define    MMC_VDD_310    18
  38. #define    MMC_VDD_320    19
  39. #define    MMC_VDD_330    20
  40. #define    MMC_VDD_340    21
  41. #define    MMC_VDD_350    22
  42. #define    MMC_VDD_360    23
  43.  
  44.     unsigned char    bus_mode;        /* command output mode */
  45.  
  46. #define MMC_BUSMODE_OPENDRAIN    1
  47. #define MMC_BUSMODE_PUSHPULL    2
  48.  
  49.     unsigned char    power_mode;        /* power supply mode */
  50.  
  51. #define MMC_POWER_OFF        0
  52. #define MMC_POWER_UP        1
  53. #define MMC_POWER_ON        2
  54. };
  55.  
  56. struct mmc_host_ops {
  57.     void    (*request)(struct mmc_host *host, struct mmc_request *req);
  58.     void    (*set_ios)(struct mmc_host *host, struct mmc_ios *ios);
  59. };
  60.  
  61. struct mmc_card;
  62. struct device;
  63.  
  64. struct mmc_host {
  65.     struct device        *dev;
  66.     struct mmc_host_ops    *ops;
  67.     unsigned int        f_min;
  68.     unsigned int        f_max;
  69.     u32            ocr_avail;
  70.     char            host_name[8];
  71.  
  72.     /* host specific block data */
  73.     unsigned int        max_seg_size;    /* see blk_queue_max_segment_size */
  74.     unsigned short        max_hw_segs;    /* see blk_queue_max_hw_segments */
  75.     unsigned short        max_phys_segs;    /* see blk_queue_max_phys_segments */
  76.     unsigned short        max_sectors;    /* see blk_queue_max_sectors */
  77.     unsigned short        unused;
  78.  
  79.     /* private data */
  80.     struct mmc_ios        ios;        /* current io bus settings */
  81.     u32            ocr;        /* the current OCR setting */
  82.  
  83.     struct list_head    cards;        /* devices attached to this host */
  84.  
  85.     wait_queue_head_t    wq;
  86.     spinlock_t        lock;        /* card_busy lock */
  87.     struct mmc_card        *card_busy;    /* the MMC card claiming host */
  88.     struct mmc_card        *card_selected;    /* the selected MMC card */
  89.  
  90.     struct work_struct    detect;
  91. };
  92.  
  93. extern struct mmc_host *mmc_alloc_host(int extra, struct device *);
  94. extern int mmc_add_host(struct mmc_host *);
  95. extern void mmc_remove_host(struct mmc_host *);
  96. extern void mmc_free_host(struct mmc_host *);
  97.  
  98. #define mmc_priv(x)    ((void *)((x) + 1))
  99. #define mmc_dev(x)    ((x)->dev)
  100.  
  101. extern int mmc_suspend_host(struct mmc_host *, u32);
  102. extern int mmc_resume_host(struct mmc_host *);
  103.  
  104. extern void mmc_detect_change(struct mmc_host *);
  105. extern void mmc_request_done(struct mmc_host *, struct mmc_request *);
  106.  
  107. #endif
  108.  
  109.